/**
 * 防抖函数
 * @param {Function} func - 需要防抖的函数
 * @param {number} delay - 延迟时间（毫秒），默认300ms
 * @returns {Function} 经过防抖处理的函数
 */
let timer = null; // 定时器
function debounce(func, delay = 300) {
  return function (...args) {
    // 如果已有定时器，清除它（重新计时）
    if (timer) {
      clearTimeout(timer);
    }

    // 重新设置定时器
    timer = setTimeout(() => {
      // 执行原函数，绑定正确的this和参数
      func.apply(this, args);
      timer = null; // 执行后清空定时器
    }, delay);
  };
}

module.exports = {
  debounce
};